package com.klm.model;

import lombok.Getter;
import lombok.Setter;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

/**
 * 语言包完整内容Model
 * 包含语言包基本信息和所有语言的内容列表
 */
@Setter
@Getter
public class ComLangModel {
    /**
     * 多語系詞語基本信息
     * 包含业务表名、字段名、主键等信息
     */
    private ComLangItemModel itemModel;
    
    /**
     * 多語系詞語內容列表
     * 包含所有支持的语言的内容
     */
    private List<ComLangContentModel> contentList;

    /**
     * 获取语言内容列表
     * 如果列表为空则创建新的ArrayList
     * @return 语言内容列表
     */
    public List<ComLangContentModel> getContentList() {
        if (contentList == null) {
            contentList = new ArrayList<>();
        }
        return contentList;
    }

    /**
     * 判断是否已存在指定语言的多語系詞語內容
     * @param langCode 语言代码，如：en、zh_CN等
     * @return true: 已存在; false: 不存在
     */
    public boolean containsLangCode(String langCode) {
        if (contentList == null) {
            return false;
        } else {
            return this.contentList.stream()
                    .anyMatch(content -> langCode.equals(content.getLangCode()));
        }
    }

    /**
     * 更新指定语言的多語系詞語內容
     * 如果该语言不存在则不会进行任何操作
     * @param langCode 语言代码，如：en、zh_CN等
     * @param newContent 新的多語系詞語內容
     */
    public void updateLangContent(String langCode, String newContent) {
        if (contentList != null) {
            Optional<ComLangContentModel> contentToUpdate = contentList.stream()
                    .filter(content -> langCode.equals(content.getLangCode()))
                    .findFirst();
            contentToUpdate.ifPresent(content -> content.setLanguageContent(newContent));
        }
    }
} 